---
    title : '材质的共有属性'
---

作为所有材质的基类，THREE.Material提供了以下属性：
* 基础属性:这些属性是最基本的.通过这些属性,可以控制物体的不透明,是否可见以及如何被引用(通过id或者自定名称).
* 融合属性:每个物体dou'you一系列的融合属性.这些属性决定了物体如何与背景融合.
* 高级属性:有一些高级属性可以控制底层WebGL上下文对象渲染物体的方式.大多数情况是不需要这些属性的.

## 公共属性

|属性|说明|
|---|---|
|id|当你创建一个材质的时候自动分配，作为材质实例的标识，从0开始自动计数|
|uuid|全局唯一标识，内部使用|
|name|给材质分配一个名称，调试用|
|opacity|设定材质的透明度，和transparent联用，范围0～1|
|transparent|如果设置为true，则Three.js考虑opacity的设置。对于具有Alpha通道的纹理，该属性也需要设置为true|
|overdraw|使用THREE.CanvasRenderer渲染器时多边形会比预期的绘制的大一些。如果使用该渲染器时物体有间隙,可设置为true|
|visible|材质是否可见，如果设置为false则物体看不见|
|side|材质应用到目标Geomotry的哪一面。默认THREE.Frontside表示应用在外面<br/>THREE.BackSide应用在里面<br/>THREE.DoubleSide应用到两面
|needsUpdate|改变材质的某些属性后，你可以设置该属性为true，这样Three.js就会丢弃缓存，重新渲染材质|
|colorWrite|该值为false时,则具有该材质的物体不会被真正绘制到场景中.实际效果时该物体本身不可见,但其他物体被他遮挡的部分也不可见.|
|flatShading|平面着色,该属性控制物体表面法线的生成方式从而影响光照效果,该值为true时,在相邻两个但不共面的三角形之间,关照会产生硬过渡而产生棱角;false会产生非常平滑的过渡效果|
|lights|该属性控制物体表面是否接受关照,默认true.|
|premultipliedAlpha|该属性控制半透明颜色的混合模式,默认false.|
|dithering|该属性控制是否启动颜色抖动模式,该模式可以在一定程度减轻颜色不均匀的问题,默认时false.|
|shadowSide|这个属性和side类似,但它控制的物体的那个面会投射阴影,默认为null.如果是默认null,遵循如下规则:<br/>当side为THREE.FrontSide,shadowSide为后面.<br/>当side为THREE.BackSide时,shadowSide为前面;<br/>当side为THREE.DoubleSide时,shadowSide也是双侧的.|
|vertexColors|你可以为物体的每一个顶点指定特定的颜色,该属性的默认值为false.如果值设置成true,则渲染时会将buffergeometry中的颜色数组渲染顶点颜色.|
|fog|该属性控制材质是否受到雾的影响.|

## 混合（Blending）属性

材质有几个与融合相关的一般属性。融合决定了我们渲染的颜色如何与它们后面的颜色交互。

|属性|说明|
|---|---|
|blending|决定材质如何与背景混合,默认值THREE.NormalBlending，表示仅仅显示顶层颜色|
|blendSrc|定义物体(源)如何混合到背景(目标)中,默认THREE.SrcAlphaFactor表示基于物体的Alpha通道进行混合|
|blendSrcAlpha|该属性为blendSrc指定透明度,默认值为null|
|blendDst|定义在混合时,背景(目标)如何渲染,默认THREE.OneMinusSrcAlphaFactor表示基于物体的Alpha通道进行混合,只是使用的值是1(源的alpha通道值))|
|blendDstAlpha|该属性为blendDst指定透明度,默认值为null|
|blendEquation|定义blendSrc、blendDst如何使用,默认将它们相加(AddEquation).通过使用这三个属性,可以创建自定义的融合模式|

## 高级属性

我们不会深入探讨这些属性的细节。它们与WebGL内部如何工作相关。如果你想更多地了解这些属性，那么OpenGL规范是一个很好的起点。

|属性|说明|
|---|---|
|depthTest|这是一个高级WebGL属性,使用这个属性可以打开或者关闭GL_DEPTH_TEST参数,该参数控制是否使用像素深度来计算新像素的值.|
|depthWrite|这个属性用来决定这个材质是否影响WebGL的深度缓存|
|depthFunc|该属性指定使用深度测试算法,它对应着WebGL规格中的glDepthFunc属性|
|ploygonOffset,polygonOffsetFactor,polygonOffsetUnits|通过这些属性,可以控制WebGL的POLYGON_OFFSET_FILL特性,|
|alphatest|可以给这个属性指定一个值(从0到1).如果某个像素的alpha值小于值,那么该像素不会显示出来.可以使用这个属性移除一些与透明度相关的毛边|
|precision|设置当前材质的计算精度,可使用WebGL参数值:highp,mediump,lowp|